#include <unistd.h>
#include <sys/types.h>
#include <stdio.h>
#include <sys/wait.h>

int	main(int argc, char **argv)
{
    printf("main进程 %d 开始执行\n", getpid());

    int flag = 1;
    //创建子进程
    /*
    fork()有两次返回值
    一次为返回执行子进程，返回值为0
    一次为返回执行父进程，返回值为子进程的pid
    */
    pid_t pid = fork();

    if (pid == 0)
    {
        flag--;
        printf("子进程 %d 开始执行， 父进程为 %d\n", getpid(), getppid());
        printf("flag = %d -- %p\n", flag, &flag);
    }
    else if(pid > 0)
    {
        flag++;
        printf("父进程 %d 子进程 %d\n", getpid(), pid);
        printf("flag = %d -- %p\n", flag, &flag);
        // waitpid(pid, NULL, 0);
    }else
    {
        printf("创建子进程失败\n");
        return -1;
    }


    printf("进程执行结束，进程id为 %d\n", getpid());
    return 0;
}
